/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/**
 *
 * @author root
 */
@Entity
@Table(name = "temporada")
@NamedQueries({
    @NamedQuery(name = "Temporada.findAll", query = "SELECT t FROM Temporada t"),
    @NamedQuery(name = "Temporada.findByIdTemporada", query = "SELECT t FROM Temporada t WHERE t.idTemporada = :idTemporada"),
    @NamedQuery(name = "Temporada.findIdTemporada", query = "SELECT max(t.idTemporada) FROM Temporada t"),
    @NamedQuery(name = "Temporada.findByInicio", query = "SELECT t FROM Temporada t WHERE t.inicio = :inicio"),
    @NamedQuery(name = "Temporada.findByFechas", query = "SELECT t FROM Temporada t WHERE t.inicio = :inicio AND t.fin = :fin"),
    @NamedQuery(name = "Temporada.findByInicioFinTipoTemporadas", query = "SELECT t from Temporada t WHERE t.inicio = :inicio AND "
        + "t.fin = :fin AND t.tipoTemporadas = :tipoTemporadas"),
    @NamedQuery(name = "Temporada.findByFechas.count", query = "SELECT COUNT(t) FROM Temporada t WHERE t.inicio = :inicio AND t.fin = :fin"),
    @NamedQuery(name = "Temporada.findentrefechas", query = "SELECT t FROM Temporada t WHERE"
    + "((t.inicio <= :fechaFin) AND (t.fin >= :fechaInicio))"),
    @NamedQuery(name = "Temporada.findByFin", query = "SELECT t FROM Temporada t WHERE t.fin = :fin")})
public class Temporada implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idTemporada")
    private Integer idTemporada;
    @Basic(optional = false)
    @Column(name = "inicio")
    @Temporal(TemporalType.DATE)
    private Date inicio;
    @Basic(optional = false)
    @Column(name = "fin")
    @Temporal(TemporalType.DATE)
    private Date fin;
    @JoinColumn(name = "tipo_temporada", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.EAGER)
    private TipoTemporadas tipoTemporadas;

    public Temporada() {
    }

    public Temporada(Integer idTemporada) {
        this.idTemporada = idTemporada;
    }

    public Temporada(Integer idTemporada, Date inicio, Date fin) {
        this.idTemporada = idTemporada;
        this.inicio = inicio;
        this.fin = fin;
    }

    public Integer getIdTemporada() {
        return idTemporada;
    }

    public void setIdTemporada(Integer idTemporada) {
        this.idTemporada = idTemporada;
    }

    public Date getInicio() {
        return inicio;
    }

    public void setInicio(Date inicio) {
        this.inicio = inicio;
    }

    public Date getFin() {
        return fin;
    }

    public void setFin(Date fin) {
        this.fin = fin;
    }

    public TipoTemporadas getTipoTemporadas() {
        return tipoTemporadas;
    }

    public void setTipoTemporadas(TipoTemporadas tipoTemporadas) {
        this.tipoTemporadas = tipoTemporadas;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idTemporada != null ? idTemporada.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Temporada)) {
            return false;
        }
        Temporada other = (Temporada) object;
        if ((this.idTemporada == null && other.idTemporada != null) || (this.idTemporada != null && !this.idTemporada.equals(other.idTemporada))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Temporada[ idTemporada=" + idTemporada + " ]";
    }
}
